<?php
/*********************** Easy-D ****************************
 @ 文件名称：function.php
 @ 文件名称：全局函数配置文件                   
 @ 文件作用：系统接口开发时所使用的全局函数，可以在此进行统一的配置写入
 @ 维护人员：weixuan                                      
 ***********************************************************/

//根据布尔值值转化为数据存储的默认格式
function setBoolDefault($v){
    return $v ? 1 : 0;
}

//数字转化为字符布尔值
function setIntConversionBool($v){
    return $v == '0' ? 'false' : 'true';
}

//数字转化为标准布尔值
function setIntConversionStandardBool($v){
    return $v == '0' ? false : true;
}

//字符串分割转化为数组
function strConversionArray($str,$separator=","){
    return explode($separator,$str);
}

//判断字符串是否满足以指定字符结尾
function endWith($haystack, $needle) {
    $length = strlen($needle);
    if($length == 0){
        return true;
    }
    return (substr($haystack, -$length) === $needle);
}

//二维数组去重
function unique_2d_array_by_key($_2d_array, $unique_key) {
    $tmp_key[] = array();
    foreach ($_2d_array as $key => &$item) {
      if ( is_array($item) && isset($item[$unique_key]) ) {
        if ( in_array($item[$unique_key], $tmp_key) ) {
          unset($_2d_array[$key]);
        } else {
          $tmp_key[] = $item[$unique_key];
        }
      }
    }
    return $_2d_array;
}

//php实现下载远程文件保存到本地
function getFile($url, $save_dir = '', $filename = '') {
    $ch = curl_init();//初始化一个cURL会话
    curl_setopt($ch,CURLOPT_URL,$url);//抓取url
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//是否显示头信息
    curl_setopt($ch,CURLOPT_SSLVERSION,3);//传递一个包含SSL版本的长参数
    $data = curl_exec($ch);// 执行一个cURL会话
    $error = curl_error($ch);//返回一条最近一次cURL操作明确的文本的错误信息。
    curl_close($ch);//关闭一个cURL会话并且释放所有资源
    $destination = $save_dir.$filename;
    $file = fopen($destination,"w+");
    fputs($file,$data);//写入文件
    fclose($file);
}


//php判断远程文件是否存在
function check_file_exists($file){
    if(strtolower(substr($file, 0, 4))=='http'){
        $header = get_headers($file, true);
        return isset($header[0]) && (strpos($header[0], '200') || strpos($header[0], '304'));
    }else{
        return file_exists($file);
    }
}

//目录拷贝
function xCopy($source, $destination, $child){   
    if(!is_dir($source)){   
        echo("Error:the $source is not a direction!");   
        return 0;   
    }

    if(!is_dir($destination)){   
        mkdir($destination,0777);   
    }

    $handle=dir($source);   
    while($entry=$handle->read()) {   
    if(($entry!=".")&&($entry!="..")){   
        if(is_dir($source."/".$entry)){   
            if($child)   
            xCopy($source."/".$entry,$destination."/".$entry,$child);   
        }else{   
            copy($source."/".$entry,$destination."/".$entry);   
        }   
      }   
    }   
}

//递归删除目录
function rmdirr($dirname) {
    if (!file_exists($dirname)) {
        return false;
    }
    if (is_file($dirname) || is_link($dirname)) {
        return unlink($dirname);
    }
    $dir = dir($dirname);
    if($dir){
        while (false !== $entry = $dir->read()) {
            if ($entry == '.' || $entry == '..') {
                continue;
            }
            rmdirr($dirname . DIRECTORY_SEPARATOR . $entry);
        }
    }
    $dir->close();
    return rmdir($dirname);
}